﻿Imports AccesoADatos
Imports Dominio
Imports System.Transactions

Public Class Bootstrap
    Dim contexto As BaseDeDatosVideo

    Public Sub New(contexto As BaseDeDatosVideo)
        Me.contexto = contexto
        If (contexto.Generos.Count() = 0) Then
            AddGeneros()
        End If
        If (contexto.Socios.Count() = 0) Then
            AddSocios()
        End If
        If (contexto.Peliculas.Count() = 0) Then
            AddPeliculas()
        End If
    End Sub

    Private Sub AddGeneros()
        AddNewGenero("Terror", "De terror")
        AddNewGenero("Aventura", "De aventura")
        AddNewGenero("Suspenso", "De suspenso")
        AddNewGenero("Drama", "De drama")
        AddNewGenero("Comedia", "De comedia")
        AddNewGenero("Romántica", "Romántica")
    End Sub

    Private Sub AddNewGenero(nombre As String, descripcion As String)
        Dim genero As New Genero() With {.Nombre = nombre, .Descripcion = descripcion}
        contexto.Generos.Add(genero)
        contexto.SaveChanges()
    End Sub

    Private Sub AddSocios()
        AddNewSocio("Martín", "Caballero", "Estados Unidos 264", "mpccolorado@hotmail.com", "4523108")
        AddNewSocio("Gonzalo", "Caballero", "Estados Unidos 264", "unmail@hotmail.com", "4523108")
        AddNewSocio("Pablo", "Caballero", "Naciones Unidas 264", "unmail@gmail.com", "4521216")
        AddNewSocio("Alfonsina", "Caballero", "Avenida Siempreviva 123", "otromail@hotmail.com", "4512122")
        AddNewSocio("Marcos", "López", "Una calle", "nna@hotmail.com", "4523109")
        AddNewSocio("Mariano", "López", "Otra calle", "mariano@hotmail.com", "4523228")
        AddNewSocio("Marcos", "Terzoni", "S/N", "marcos.terzoni@hotmail.com", "4524568")
        AddNewSocio("Ana", "Caballero", "S/N", "ana@hotmail.com", "4529908")
        AddNewSocio("Daniela", "López", "Otra calle", "daniela@hotmail.com", "4523232")
    End Sub

    Private Sub AddNewSocio(nombre As String, apellido As String, domicilio As String, email As String, telefono As String)
        Dim socio As New Socio() With {.Nombre = nombre, .Apellido = apellido, .Domicilio = domicilio, .Email = email, .Telefono = telefono}
        contexto.Socios.Add(socio)
        contexto.SaveChanges()
    End Sub

    Private Sub AddPeliculas()
        Dim terror As Genero = (From g In contexto.Generos
                               Where g.Nombre.Contains("Terror")
                               Select g).First
        Dim romantica As Genero = (From g In contexto.Generos
                               Where g.Nombre.Contains("Romántica")
                               Select g).First
        Dim aventura As Genero = (From g In contexto.Generos
                               Where g.Nombre.Contains("Aventura")
                               Select g).First
        Dim suspenso As Genero = (From g In contexto.Generos
                               Where g.Nombre.Contains("Suspenso")
                               Select g).First

        AddNewPelicula("Diario de una pasión", "Una descripción", romantica)
        AddNewPelicula("Al final de la escalera", "Una descripción", terror)
        'AddAlquileresToPelicula("Al final de la escalera")
        AddNewPelicula("La noche de los muertos vivos", "Una descripción", terror)
        AddNewPelicula("Propuesta indecente", "Una descripción", romantica)
        AddNewPelicula("Muertos Vivos 2", "Una descripción", terror)
        'AddAlquileresToPelicula("Muertos Vivos 2")
        AddNewPelicula("Muertos Vivos - La epidemia", "Una descripción", terror)
        AddNewPelicula("Los piratas del caribe", "Otra descripción", aventura)
        AddNewPelicula("The walking dead", "Otra descripción", terror)
        AddNewPelicula("El gran pez", "Otra descripción", aventura)
        AddNewPelicula("Martes 13", "Otra descripción", terror)
        AddNewPelicula("La habitación del pánico", "Otra descripción", suspenso)
    End Sub

    Private Sub AddNewPelicula(nombre As String, descripcion As String, genero As Genero)
        Dim pelicula As New Pelicula() With {.Nombre = nombre, .Descripcion = descripcion, .Genero = genero}
        contexto.Peliculas.Add(pelicula)
        contexto.SaveChanges()
    End Sub

    Private Sub AddAlquileresToPelicula(nombrePelicula As String)
        'Falta que funcione este método
        Dim pelicula = (From peli In contexto.Peliculas
                    Where peli.Nombre.Contains(nombrePelicula)).First()
        Dim socio As Socio = (From soc In contexto.Socios
                                Where soc.Nombre.Contains("Martín")).First()

        Dim alquiler As Alquiler = New Alquiler() With {.Pelicula = pelicula, .Socio = socio, .FechaDeAlquiler = New Date(), .FechaDeDevolucion = New Date()}
        contexto.Alquileres.Add(alquiler)
        alquiler = New Alquiler() With {.Pelicula = pelicula, .Socio = socio, .FechaDeAlquiler = New Date(2005, 1, 1), .FechaDeDevolucion = New Date(2005, 1, 4)}
        contexto.Alquileres.Add(alquiler)
        alquiler = New Alquiler() With {.Pelicula = pelicula, .Socio = socio, .FechaDeAlquiler = New Date(2006, 2, 2), .FechaDeDevolucion = New Date(2006, 2, 5)}
        contexto.Alquileres.Add(alquiler)
        contexto.SaveChanges()
    End Sub
End Class
